#ifndef __M_LOGGER_H__
#define __M_LOGGER_H__

#include <cstdio>
#include <ctime>

#define INF 0
#define DBG 1
#define ERR 2
#define DEFAULT_LOG_LEVEL INF

#define LOG(level, format,...) do{\
    if(level < DEFAULT_LOG_LEVEL) break;\
    time_t t = time(nullptr);/*获取时间戳*/\
    struct tm *lt = localtime(&t);/*时间戳转化为本地时间的结构体*/\
    char buf[32];\
    strftime(buf, sizeof(buf) - 1, "%Y%m%d %H:%M:%S", lt);/*时间数据格式化到字符串中*/\
    fprintf(stdout, "[%s][%s:%d] " format "\n", buf, __FILE__, __LINE__, ##__VA_ARGS__);\
} while(0)

#define ILOG(format,...) LOG(INF, format, ##__VA_ARGS__)
#define DLOG(format,...) LOG(DBG, format, ##__VA_ARGS__)
#define ELOG(format,...) LOG(ERR, format, ##__VA_ARGS__)

#endif
/*
* __FILE__ 获取文件名
* __LINE__ 获取当前行
* __VA_ARGS__ 可变参数列表
* ## 拼接两边为一个整体符号

*/
